import { ref } from 'vue';
import axios from 'axios';
import { ElMessage } from 'element-plus';
import config from '../utils/config'
import { useUserStore } from '../store/user'

// console.log(userState)

axios.defaults.withCredentials = false;



// 创建axios实例
const service = axios.create({
  baseURL: config.BaseUrl, // api 的 base_url
  timeout: 5000 // 请求超时时间
})

// request拦截器
service.interceptors.request.use(
  config => {
    
    const { userState, logout } = useUserStore() 
    const token = userState.token || localStorage.getItem('token'); // 从 Pinia 或 LocalStorage 获取 token

    if (userState.token) {
      // config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
      config.headers.Authorization = `Bearer ${token}`// 让每个请求携带自定义token 请根据实际情况自行修改
    }

    console.log('config@@@@',config)

    return config
  },
  error => {
    // Do something with request error
    Promise.reject(error)
  }
)

// response 拦截器
service.interceptors.response.use(
  response => {
    const { userState, logout } = useUserStore() 
    const res = response.data
    console.log('response 拦截器:', response)

    // if (res.status === 401) {
    //   ElMessage({
    //     message: '登录过期，请重新登录！',
    //     type: 'error',
    //     icon: 'none',
    //     duration: 3 * 1000
    //   })
    //   logout()
    // }
    // if (parseInt(res.code) === 200) {
    //   // ElMessage.success('请求成功！')
    //   ElMessage.error('登录过期，请重新登录！')
    //   setTimeout(() => {
    //   userState.isShowLogin = true
    //   //   // store.dispatch('LogOut').then(() => {
    //   //   //   location.reload() // 为了重新实例化vue-router对象 避免bug
    //   //   // })
    //   }, 1500)
    //   return
    // }

    // if (parseInt(res.code) === 1023) {
    //   ElMessage.error('登录过期，请重新登录！')
    //   setTimeout(() => {
    //     store.dispatch('LogOut').then(() => {
    //       location.reload() // 为了重新实例化vue-router对象 避免bug
    //     })
    //   }, 1500)
    // }
    // if (parseInt(res.code) === 4002) {
    //   ElMessage.error('重新新获取菜单')
    //   setTimeout(() => {
    //     store.dispatch('changeSidebar', true).then(() => {
    //       this.$store.dispatch('changeSidebar', false)
    //       location.reload() // 为了重新实例化vue-router对象 避免bug
    //     })
    //   }, 1500)
    // }
    return response
  },
  error => {
    console.log('输出error:', error)
    const { userState, logout } = useUserStore() 
    if (error.status === 401) {
      ElMessage({
        message: '登录过期，请重新登录',
        type: 'error',
        duration: 3 * 1000
      })
      logout()
      return Promise.reject(error)
    } 

    // ElMessage({
    //   message: error.message,
    //   type: 'error',
    //   duration: 5 * 1000
    // })
    return Promise.reject(error)
  }
)

export default service;
